//
// Created by tangjian on 10/13/23.
//

#ifndef C_WEBDISK_CDBC_H
#define C_WEBDISK_CDBC_H

#include "func.h"
#include <mysql/mysql.h>
#include "log.h"

typedef struct vdirent_s {
    char d_id[256];         //唯一id
    char d_perid[256];      //父文件夹唯一id
    char d_md5[256];        //文件的md5
    char d_type[256];            //类型，0文件夹，1文件
    char d_fname[256];      //文件名
    char d_fpath[256];      //文件路径
    char usr[256];          //创建人
    char d_tomb[256];            //删除状态，0未删除，1删除
    char create_time[256];  //创建时间
    char update_time[256];  //更新时间
} vdirent_t;

typedef struct user_s {
    int u_id;               //用户唯一id
    char u_name[256];       //用户名
    char u_password[256];   //用户秘文密码
    char u_salt[256];       //密码盐值
    char u_tomb;            //删除状态，0未删除，1删除
    char create_time[256];  //创建时间
    char update_time[256];  //更新时间
} user_t;

typedef struct cdbc_s {
    char db_host[128];
    char db_port[128];
    char db_user[128];
    char db_name[128];
    char db_pw[128];
    MYSQL *mysql;
} cdbc_t;

int hello();
int cutPath(char *filePath, char **folderNames, int maxFolders);
int test_cutPath();

//建立数据库连接

int cdbc_conf(cdbc_t *cdbc);
int cdbc_init(cdbc_t *cdbc);
int cdbd_free(cdbc_t *cdbc);
//int insert_fileinfo(vdirent_t *vdirent);
//int delete_fileinfo(vdirent_t *vdirent);
//int update_fileinfo(vdirent_t *vdirent);
//int select_fileinfo(vdirent_t *vdirent);
int test_insert();
int vdirent_fill(vdirent_t *vdirent, MYSQL_RES *mysqlRes);
int getFileInfo_byDirUser(MYSQL *mysql,  vdirent_t *vdirent,
                          char *filename, char *username, char *pre_id);
int getFileInfo_byId(MYSQL *mysql, vdirent_t *vdirent, char *id);
int getCount_byMd5(MYSQL *mysql, char *md5);
int insertFileInfo(MYSQL *mysql, vdirent_t *vdirent);

#endif //C_WEBDISK_CDBC_H
